#ifndef CQTGPS_H
#define CQTGPS_H

#include <QObject>
#include <QSerialPort>
#include <QSerialPortInfo>
#include <QDateTime>
#include <QList>
#include <QString>

class CQtGPS : public QSerialPort
{
    Q_OBJECT
public:
    explicit CQtGPS(QObject *parent = 0);
    explicit CQtGPS(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr);
    explicit CQtGPS(const QString &strPortName, QSerialPort::BaudRate baud,QObject *parent = 0);

    //获取属性
    int GetYY() const;
    int GetMM() const;
    int GetDD() const;
    int Gethh() const;
    int Getmm() const;
    int Getss() const;
    int Getms() const;
    QDateTime getCurrentTime() const;  //获取当前的时间

    QList<QSerialPortInfo> getPortInfo();
    float getLongitude() const;  //经度
    float getLatitude() const;   //纬度
    QString getLongitudeSign() const; //经度方向 E:东经 W：西经
    QString getLatitudeSign() const;  //纬度方向 N:北纬 S:南纬

signals:
    void signalGetReady(); //接受一次有效数据就发送一次信号
private:
    //gps解析参数
    int _YY;
    int _MM;
    int _DD;
    int _hh;
    int _mm;
    int _ss;
    int _ms;
    QDateTime _currentTime;
    float _longitude; //经度
    float _latitude; //纬度
    QString _longitudeSign; //经度方向 E:东经 W：西经
    QString _latitudeSign; //纬度方向 N:北纬 S:南纬

    void paraInit(); //初始化参数函数
    void dealRec(); //接受处理函数

public slots:
};

#endif // CQTGPS_H


/*使用说明：
 * $GNRMC（推荐定位信息 $GNRMC,095554.000,A,2318.1327,N,11319.7252,E,000.0,005.7,081215,,,A*73
 * 创建一个类，继承serialort类
    CQtGPS *gps=new CQtGPS(tr("ttyUSB0"),QSerialPort::Baud38400,this);
    gps->setParent(this);
//    gps->setPortName(tr("COM21"));
//    gps->setBaudRate(QSerialPort::Baud38400);
    gps->open(QIODevice::ReadWrite);
    if(gps->isOpen()==true)
    {
        qDebug()<<tr("open true");
        gps->write("hello");
        connect(gps,&CQtGPS::signalGetReady,this,[=]
        {
            qDebug()<<"当前时刻："<<gps->getCurrentTime()<<"纬度："<<gps->getLatitudeSign()<<gps->getLatitude()<<"纬度"<<gps->getLongitudeSign()<<gps->getLongitude();
        });
    }
 *
 *
QDateTime time1 = QDateTime::fromString("2012-07-23 15:30:20", "yyyy-MM-dd hh:mm:ss");
*/
